<?php
if (!isset($common)) require_once 'common.php';

include_once 'include/functions.php';
include_once 'include/unidades.php';
include_once 'messages.php';

/**
 * 
 * 1- se enfrentan las tropas del mismo tipo por orden de lista de tropas.
 * 2- si no quedan tropas enemigas del mismo tipo lucho contra las tropas mas arriba en la lista que no tengan tropas rivales del mismo tipo.
 * 3- si todas las tropas enemigas tienen otras tropas enemigas del mismo tipo para luchar, me enfrento a las tropas de mas arriba de la lista que tenga el enemigo.
 * El Algoritmo esta disenyado de forma que el defensor tenga un 8-12% mas posibilidades de defender un ataque (dependiendo de la composicion de tropas).
 * @param integer $idAtaque
 * 
 * @author DRG.
 */
function batalla($idAtaque)
{	
	global $debug;
	//Inicializar variables
	$fin = FALSE;
	$empate = 0;
	$ganador = 0; // ninguno/empate
	$idCiudadDefensor = 0;
	$idCiudadAtacante = 0;
	$arrayEjercitoAtacante = array(0,0,0,0,0);
	$arrayEjercitoDefensor = array(0,0,0,0,0);
	$arrayEjercitoAtacante_INICIAL = array(0,0,0,0,0);
	$arrayEjercitoDefensor_INICIAL = array(0,0,0,0,0);	
	$arrayAux = array($arrayEjercitoAtacante,$arrayEjercitoDefensor,$idCiudadAtacante,$idCiudadDefensor); // arrayAux Comprobado
	
	//Cargar los ejercitos
		//ATACANTE //Comprobado
		$arrayAux = cargarEjercitoAtacante($idAtaque);
		$arrayEjercitoAtacante = $arrayAux[0];
		$arrayEjercitoAtacante_INICIAL = $arrayAux[0];
		$idCiudadAtacante = $arrayAux[2];
		$idCiudadDefensor = $arrayAux[3];
					
		// Eliminar ataque //Comprobado 
		eliminarAtaque($idAtaque);	
		
		// DEFENSOR //Comprobado
		$arrayEjercitoDefensor = cargarEjercitoDefensor($idCiudadDefensor);	
		$arrayAux[1] = $arrayEjercitoDefensor;
		$arrayEjercitoDefensor_INICIAL = $arrayEjercitoDefensor;
		
	//Ejercitos para probar
//	$arrayEjercitoAtacante = array(13,8,15,11,9);
//	$arrayEjercitoDefensor = array(6,20,10,11,8);
	
	/**
	 * Primera version de combates, con enfrentamiento inicial y consecuentes. Un tanto desequilibrada si se atacaba "en Masa"
	 */
		
/*	for ($unidad = 0; $unidad < 5; $unidad++) //Lucha unidades del mismo tipo
	{
		if ($debug) echo ("<br /> Dentro del for: bucle ".$unidad);
		if ( ($arrayEjercitoAtacante[$unidad] !=0) && ($arrayEjercitoDefensor[$unidad] !=0) )
		{
			//-----------------//
			$tropasA = $arrayEjercitoAtacante[$unidad];
			$tropasB = $arrayEjercitoDefensor[$unidad];
			$fuerzaA = unidadesGetFuerza($unidad);
			$fuerzaB = unidadesGetFuerza($unidad);
			$defensaA = unidadesGetDefensa($unidad, $unidad);
			$defensaB = unidadesGetDefensa($unidad, $unidad);
			//----------------//
			if ($debug) echo ("<br />tropasA: ".$tropasA);
			if ($debug) echo ("<br />tropasB: ".$tropasB);
			if ($debug) echo ("<br />fuerzaA: ".$fuerzaA);
			if ($debug) echo ("<br />fuerzaB: ".$fuerzaB);
			if ($debug) echo ("<br />defensaA: ".$defensaA);
			if ($debug) echo ("<br />defensaB: ".$defensaB);
			//----------------//
			$porcentajeMuertosB = ( ( $tropasA * $fuerzaA ) - ( $defensaB * $tropasB ) ) / $tropasB;
			$porcentajeMuertosA = ( ( $tropasB * $fuerzaB ) - ( $defensaA * $tropasA ) ) / $tropasA;
			if ($debug) echo ("<br />Porcentaje muertos A: ".$porcentajeMuertosA);
			if ($debug) echo ("<br />Porcentaje muertos B: ".$porcentajeMuertosB);
			//------------------//
			if ($porcentajeMuertosA>0 && $porcentajeMuertosA<100)
			{	
				$arrayEjercitoAtacante[$unidad]=redondearCombate($arrayEjercitoAtacante[$unidad]*((100-$porcentajeMuertosA)/100));
				if ($debug) echo ("<br />Unidad atacante ".$unidad." tiene:".$arrayEjercitoAtacante[$unidad]." soldados");
			}
			else
			{	
				if ($porcentajeMuertosA>=100)
			
				{
					$arrayEjercitoAtacante[$unidad]=0;
				}
				if ($debug) echo ("<br />Unidad atacante ".$unidad." tiene:".$arrayEjercitoAtacante[$unidad]." soldados");
			}//end else si $porcentajeMuertosA<0 no lo cambiamos
			
			
			if ($porcentajeMuertosB>0 && $porcentajeMuertosB<100)
			{	
				$arrayEjercitoDefensor[$unidad]=redondearCombate($arrayEjercitoDefensor[$unidad]*((100-$porcentajeMuertosB)/100));
				if ($debug) echo ("<br />Unidad defensora ".$unidad." tiene:".$arrayEjercitoDefensor[$unidad]." soldados");
			}
			else
			{	
				if ($porcentajeMuertosB>=100)
			
				{
					$arrayEjercitoDefensor[$unidad]=0;
				}
				if ($debug) echo ("<br />Unidad defensora ".$unidad." tiene:".$arrayEjercitoDefensor[$unidad]." soldados");
			}//end else si $porcentajeMuertosB<0 no lo cambiamos
			if ($debug) echo ("<br /><br />");
			
			//----------------------------------//
		}//end if
	}//end for
//-----------------------------------------------------------------------------------------------------------------//

	if ($debug) echo("<br /><br />---- FIN DE LA PRIMERA FASE DE BATALLA ----<br /><br /> " );

*/
/**
 * Fin Primera version con 1ª fase de batalla.
 */	
		
	while ($fin == FALSE)
	{
		if ($debug) echo("<br />Dentro del while not fin<br />");
		$contA=0;
		$contB=0;
		for ($unit = 0; $unit < 5; $unit++) 
		{
			if ($arrayEjercitoAtacante[$unit] == 0)
			{
				$contA++;
			}
			if ($arrayEjercitoDefensor[$unit] == 0 )
			{
				$contB++;
			}
		}

		if ($contA == 5)
		{
			$fin = TRUE;
			$ganador = 2; //Gana Defensor
		}
		
		if ($contB == 5)
		{
			$fin = TRUE; 
			$ganador = 1; //Gana Atacante
		}
		if ($contB == 5 && $contA == 5 || $empate == 100)//TODO $empate es el numero de comprobaciones antes de determinar el empate.
		{
			$fin = TRUE; 
			$ganador = 0; //Empate
		}
		//-----------------
		if ($debug) echo ("<br />tropasA:");
		for ($i = 0; $i < 5; $i++) 
		{
			if ($debug) echo ($arrayEjercitoAtacante[$i].",");
		}
		if ($debug) echo ("<br />tropasB:");
		for ($i = 0; $i < 5; $i++) 
		{
			if ($debug) echo ($arrayEjercitoDefensor[$i].",");
		}
		//-----------------
		
		if (!$fin)
		{
			//
			$empate++;
			//
			
			if ($debug) echo("<br />dentro del if !fin <br />");
			$unidadA = 0;
			$unidadB = 0;
			/*
			 * NUEVA VERSION
			 */
			while ($unidadA < 5) 
			{			
				if ($debug) echo("<br />dentro del if while udA. Unidad A =".$unidadA." contra Unidad B =".$unidadB." <br />");
				if ($arrayEjercitoAtacante[$unidadA] !=0)
				{
					while ($unidadB < 5) 
					{
						if ($debug) echo("<br />dentro del if while udB. Unidad A =".$unidadA." contra Unidad B =".$unidadB." <br />");
						if ( ($arrayEjercitoAtacante[$unidadA] !=0) && ($arrayEjercitoDefensor[$unidadB] !=0) )
						{
							//-----------------//
							if ($arrayEjercitoAtacante[$unidadA]<5)
								$tropasA = $arrayEjercitoAtacante[$unidadA];
							else $tropasA = 5;
							if ($arrayEjercitoDefensor[$unidadB]<5)
								$tropasB = $arrayEjercitoDefensor[$unidadB];
							else $tropasB = 5;
							$fuerzaA = unidadesGetFuerza($unidadA);
							$fuerzaB = unidadesGetFuerza($unidadB);
							$defensaA = unidadesGetDefensa($unidadA, $unidadB);
							$defensaB = unidadesGetDefensa($unidadB, $unidadA);
							$porcentajeMuertosB = ( ( $tropasA * $fuerzaA ) - ( $defensaB * $tropasB ) ) / $tropasB;
							$porcentajeMuertosA = ( ( $tropasB * $fuerzaB ) - ( $defensaA * $tropasA ) ) / $tropasA;
							if ($debug) echo ("<br />Porcentaje muertos A: ".$porcentajeMuertosA);
							if ($debug) echo ("<br />Porcentaje muertos B: ".$porcentajeMuertosB);
							//------------------//
							if ($porcentajeMuertosA>0 && $porcentajeMuertosA<100)
							{	
								//$arrayEjercitoAtacante[$unidadA]
								$tropasAMuertas = $tropasA;
								$tropasAMuertas=redondearCombate($tropasA*(($porcentajeMuertosA)/100));
								$arrayEjercitoAtacante[$unidadA]=$arrayEjercitoAtacante[$unidadA]-$tropasAMuertas;
							}
							else
							{	
								if ($porcentajeMuertosA>=100)
							
								{
									$arrayEjercitoAtacante[$unidadA]=$arrayEjercitoAtacante[$unidadA]-$tropasA;
								}
							}
							if ($debug) echo ("<br />Unidad atacante ".$unidadA." tiene:".$arrayEjercitoAtacante[$unidadA]." soldados");
							//end else si $porcentajeMuertosA<0 no lo cambiamos
							
							
							if ($porcentajeMuertosB>0 && $porcentajeMuertosB<100)
							{	
								//$arrayEjercitoAtacante[$unidadA]
								$tropasBMuertas = $tropasB;
								$tropasBMuertas=redondearCombate($tropasB*(($porcentajeMuertosB)/100));
								$arrayEjercitoDefensor[$unidadB]=$arrayEjercitoDefensor[$unidadB]-$tropasBMuertas;
								
							}
							else
							{	
								if ($porcentajeMuertosB>=100)
							
								{
									$arrayEjercitoDefensor[$unidadB]=$arrayEjercitoDefensor[$unidadB]-$tropasB;
								}
								if ($debug) echo ("<br />Unidad defensora ".$unidadB." tiene:".$arrayEjercitoDefensor[$unidadB]." soldados");
							}//end else si $porcentajeMuertosB<0 no lo cambiamos
							if ($debug) echo ("<br />tropasA:");
							for ($i = 0; $i < 5; $i++) 
							{
								if ($debug) echo ($arrayEjercitoAtacante[$i].",");
							}
							if ($debug) echo ("<br />tropasB:");
							for ($i = 0; $i < 5; $i++) 
							{
								if ($debug) echo ($arrayEjercitoDefensor[$i].",");
							}		
							if ($debug) echo ("<br /><br />");
						}//end if
						$unidadB++;
					}//end while udB
				}
				$unidadA++;
			}//end while udA
		}//end if
	}//end while fin	
		/*
		 * NUEVA VERSION - fin
		 */

	if ($debug) echo("<br /><br />Ganador: ".$ganador);if ($debug) echo("<br />FIN= ".$fin);if ($debug) echo("<br />");
	
	// Actualizar las tablas de ejercitos EN LA CIUDADES!!
	// DEFENSOR
	actualizarCiudadDefensor($idCiudadDefensor,$arrayEjercitoDefensor);//Comprobado
	$arrayAux[0] = $arrayEjercitoAtacante;
	$arrayAux[1] = $arrayEjercitoDefensor;
	
	// ATACANTE return to his city
	actualizarReturningUnits($arrayAux);//comprobado
	
	//Envio de mensajes a los contendientes	
	$ID_Receptor_A = obtenerIdUsuario($arrayAux[2]);
	$ID_Receptor_D = obtenerIdUsuario($arrayAux[3]);
	$nombreUsuario_A = obtenerNombreUsuario($arrayAux[2]);
	$nombreUsuario_D = obtenerNombreUsuario($arrayAux[2]);
	
	$unidadesEliminadas_A = array(($arrayEjercitoAtacante_INICIAL[0]-$arrayAux[0][0]),
		($arrayEjercitoAtacante_INICIAL[1]-$arrayAux[0][1]),
		($arrayEjercitoAtacante_INICIAL[2]-$arrayAux[0][2]),
		($arrayEjercitoAtacante_INICIAL[3]-$arrayAux[0][3]),
		($arrayEjercitoAtacante_INICIAL[4]-$arrayAux[0][4]));
	$unidadesEliminadas_D = array(($arrayEjercitoDefensor_INICIAL[0]-$arrayAux[0][0]),
		($arrayEjercitoDefensor_INICIAL[1]-$arrayAux[1][1]),
		($arrayEjercitoDefensor_INICIAL[2]-$arrayAux[1][2]),
		($arrayEjercitoDefensor_INICIAL[3]-$arrayAux[1][3]),
		($arrayEjercitoDefensor_INICIAL[4]-$arrayAux[1][4]));
	
	if ($ganador == 1)
	{
		$Asunto_A = "El ataque a ".$nombreUsuario_D." ha tenido exito"; 
		$Texto_A = "Nuestros valientes soldados regresan con la victoria.<br /><br />Tropas Perdidas:<br />"
		.unidadesGetName(1,0).": ".$unidadesEliminadas_A[0]."<br />"
		.unidadesGetName(1,1).": ".$unidadesEliminadas_A[1]."<br />"
		.unidadesGetName(1,2).": ".$unidadesEliminadas_A[2]."<br />"
		.unidadesGetName(1,3).": ".$unidadesEliminadas_A[3]."<br />"
		.unidadesGetName(1,4).": ".$unidadesEliminadas_A[4]."<br />"
		."<br />Tropas Eliminadas:<br />"
		.unidadesGetName(1,0).": ".$unidadesEliminadas_D[0]."<br />"
		.unidadesGetName(1,1).": ".$unidadesEliminadas_D[1]."<br />"
		.unidadesGetName(1,2).": ".$unidadesEliminadas_D[2]."<br />"
		.unidadesGetName(1,3).": ".$unidadesEliminadas_D[3]."<br />"
		.unidadesGetName(1,4).": ".$unidadesEliminadas_D[4]."<br />";
		
		
		$Asunto_D = "Hemos sufrido una derrota a manos de ".$nombreUsuario_A; 
		$Texto_D = "El ejercito invasor era imparable.<br /><br />Tropas Enemigas Derotadas:<br />"
		.unidadesGetName(1,0).": ".$unidadesEliminadas_A[0]."<br />"
		.unidadesGetName(1,1).": ".$unidadesEliminadas_A[1]."<br />"
		.unidadesGetName(1,2).": ".$unidadesEliminadas_A[2]."<br />"
		.unidadesGetName(1,3).": ".$unidadesEliminadas_A[3]."<br />"
		.unidadesGetName(1,4).": ".$unidadesEliminadas_A[4]."<br />"
		."<br />Tropas Perdidas:<br />"
		.unidadesGetName(1,0).": ".$unidadesEliminadas_D[0]."<br />"
		.unidadesGetName(1,1).": ".$unidadesEliminadas_D[1]."<br />"
		.unidadesGetName(1,2).": ".$unidadesEliminadas_D[2]."<br />"
		.unidadesGetName(1,3).": ".$unidadesEliminadas_D[3]."<br />"
		.unidadesGetName(1,4).": ".$unidadesEliminadas_D[4]."<br />";
		
		
	}
	
	if ($ganador == 2)
	{
		$Asunto_A = "El ataque sobre ".$nombreUsuario_D." ha sido rechazado"; 
		$Texto_A = "Nuestro ejercito no ha podido con la ferrea resistencia.<br /><br />Tropas Perdidas:<br />"
		.unidadesGetName(1,0).": ".$unidadesEliminadas_A[0]."<br />"
		.unidadesGetName(1,1).": ".$unidadesEliminadas_A[1]."<br />"
		.unidadesGetName(1,2).": ".$unidadesEliminadas_A[2]."<br />"
		.unidadesGetName(1,3).": ".$unidadesEliminadas_A[3]."<br />"
		.unidadesGetName(1,4).": ".$unidadesEliminadas_A[4]."<br />"
		."<br />Tropas Eliminadas:<br />"
		.unidadesGetName(1,0).": ".$unidadesEliminadas_D[0]."<br />"
		.unidadesGetName(1,1).": ".$unidadesEliminadas_D[1]."<br />"
		.unidadesGetName(1,2).": ".$unidadesEliminadas_D[2]."<br />"
		.unidadesGetName(1,3).": ".$unidadesEliminadas_D[3]."<br />"
		.unidadesGetName(1,4).": ".$unidadesEliminadas_D[4]."<br />";
		
		
		$Asunto_D = "Hemos rechazado al ejercito invasor de ".$nombreUsuario_A; 
		$Texto_D = "Nuestros hombres son fieros como leones.<br /><br />Tropas Enemigas Derotadas:<br />"
		.unidadesGetName(1,0).": ".$unidadesEliminadas_A[0]."<br />"
		.unidadesGetName(1,1).": ".$unidadesEliminadas_A[1]."<br />"
		.unidadesGetName(1,2).": ".$unidadesEliminadas_A[2]."<br />"
		.unidadesGetName(1,3).": ".$unidadesEliminadas_A[3]."<br />"
		.unidadesGetName(1,4).": ".$unidadesEliminadas_A[4]."<br />"
		."<br />Tropas Perdidas:<br />"
		.unidadesGetName(1,0).": ".$unidadesEliminadas_D[0]."<br />"
		.unidadesGetName(1,1).": ".$unidadesEliminadas_D[1]."<br />"
		.unidadesGetName(1,2).": ".$unidadesEliminadas_D[2]."<br />"
		.unidadesGetName(1,3).": ".$unidadesEliminadas_D[3]."<br />"
		.unidadesGetName(1,4).": ".$unidadesEliminadas_D[4]."<br />";
		
	}
	
	if ($ganador == 0)
	{
		$Asunto_A = "El ataque sobre ".$nombreUsuario_D." no ha tenido exito"; 
		$Texto_A = "Nuestros soldados no pudieron hacerse con la victoria.<br /><br />Tropas Perdidas:<br />"
		.unidadesGetName(1,0).": ".$unidadesEliminadas_A[0]."<br />"
		.unidadesGetName(1,1).": ".$unidadesEliminadas_A[1]."<br />"
		.unidadesGetName(1,2).": ".$unidadesEliminadas_A[2]."<br />"
		.unidadesGetName(1,3).": ".$unidadesEliminadas_A[3]."<br />"
		.unidadesGetName(1,4).": ".$unidadesEliminadas_A[4]."<br />"
		."<br />Tropas Eliminadas:<br />"
		.unidadesGetName(1,0).": ".$unidadesEliminadas_D[0]."<br />"
		.unidadesGetName(1,1).": ".$unidadesEliminadas_D[1]."<br />"
		.unidadesGetName(1,2).": ".$unidadesEliminadas_D[2]."<br />"
		.unidadesGetName(1,3).": ".$unidadesEliminadas_D[3]."<br />"
		.unidadesGetName(1,4).": ".$unidadesEliminadas_D[4]."<br />";
		
		
		$Asunto_D = "Las tropas de ".$nombreUsuario_A." nos han atacado"; 
		$Texto_D = "Las fuerzas estaban igualadas.<br /><br />Tropas Enemigas Derotadas:<br />"
		.unidadesGetName(1,0).": ".$unidadesEliminadas_A[0]."<br />"
		.unidadesGetName(1,1).": ".$unidadesEliminadas_A[1]."<br />"
		.unidadesGetName(1,2).": ".$unidadesEliminadas_A[2]."<br />"
		.unidadesGetName(1,3).": ".$unidadesEliminadas_A[3]."<br />"
		.unidadesGetName(1,4).": ".$unidadesEliminadas_A[4]."<br />"
		."<br />Tropas Perdidas:<br />"
		.unidadesGetName(1,0).": ".$unidadesEliminadas_D[0]."<br />"
		.unidadesGetName(1,1).": ".$unidadesEliminadas_D[1]."<br />"
		.unidadesGetName(1,2).": ".$unidadesEliminadas_D[2]."<br />"
		.unidadesGetName(1,3).": ".$unidadesEliminadas_D[3]."<br />"
		.unidadesGetName(1,4).": ".$unidadesEliminadas_D[4]."<br />";
		
	}
	if ($debug) echo("<br /><br />".$Texto_A);
	if ($debug) echo("<br /><br />".$Texto_D);
	
	
	$Fecha = date(DATE_RFC822);
	$Hora = time();
	
	$mensajeAtacante = new Mensaje( "","", $ID_Receptor_A, $Asunto_A, $Texto_A, $Fecha);
	$mensajeDefensor = new Mensaje( "","", $ID_Receptor_D, $Asunto_D, $Texto_D, $Fecha);
	
	GuardarMensageEnviadoEnBD($mensajeAtacante);
	GuardarMensageEnviadoEnBD($mensajeDefensor);
	
	
    return $ganador;
}	

function cargarEjercitoAtacante($idAtaque) // Parece ser que funciona bien.
{
	global $debug;
	//Inicializar variables
	$idCiudadDefensor = 0;
	$idCiudadAtacante = 0;
	$arrayEjercitoAtacante = array(0,0,0,0,0);
	$arrayEjercitoDefensor = array(0,0,0,0,0);
	
	require 'include/dbconnect.php';
	if ($debug) echo("<br>Conectado BD en cargarEjercitoAtacante().");
	
	$query = sprintf("SELECT * FROM attacks WHERE idataque='%s'",
    mysql_real_escape_string($idAtaque));
    $result = mysql_query($query);
		// El siguiente código muestra la consulta enviada a MySQL y el error ocurrido. Útil para debugging.
	if (!$result) 
	{
	    if ($debug) echo ("<br>Fallo en cargarEjercitoAtacante()");
		$message  = 'Invalid query: ' . mysql_error() . "\n";
	    $message .= 'Whole query: ' . $query;
	    die($message);
	}
		// Usar resultado
	while ($row = mysql_fetch_assoc($result)) {
	    $arrayEjercitoAtacante = array($row['tropas0'],$row['tropas1'],$row['tropas2'],$row['tropas3'],$row['tropas4']);
	    $idCiudadDefensor = $row['id_ciudad_defensor'];
	    $idCiudadAtacante = $row['id_ciudad_atacante'];
	}
		// Liberar el $result
	mysql_free_result($result);
	require 'include/dbdisconnect.php';
	if ($debug) echo("<br>Desconectado BD en cargarEjercitoAtacante().");
	
	$arrayAux = array($arrayEjercitoAtacante,$arrayEjercitoDefensor,$idCiudadAtacante,$idCiudadDefensor);
	
	return $arrayAux;
}

function eliminarAtaque($idAtaque) //Parece ser que funciona bien.
{
	global $debug;
	require 'include/dbconnect.php';	
	if ($debug) echo("<br>Conectado BD en eliminarAtaque().");
	
	if ( !mysql_query("DELETE FROM attacks WHERE idataque='".$idAtaque."'"))
	{
		if ($debug) echo("<br>Error en eliminarAtaque() al eliminar el ataque ".$idAtaque." de la tabla 'attacks'."); 
		die('Error: '. mysql_error());
	}
	require 'include/dbdisconnect.php';
	if ($debug) echo("<br>Desconectado BD en eliminarAtaque().");
}

function cargarEjercitoDefensor($idCiudadDefensor) ////Parece ser que funciona bien.
{
	global $debug;
	//Inicializar variables
	$arrayEjercitoDefensor = array(0,0,0,0,0);
	
	require 'include/dbconnect.php';
	if ($debug) echo("<br>Conectado BD en cargarEjercitoDefensor().");
	
	$query = sprintf("SELECT * FROM cities WHERE idcity='%s'",
    mysql_real_escape_string($idCiudadDefensor));
    $result = mysql_query($query);

		// Comprobar resultado
		// El siguiente código muestra la consulta enviada a MySQL y el error ocurrido. Útil para debugging.
	if (!$result) {
	    $message  = 'Invalid query: ' . mysql_error() . "\n";
	    $message .= 'Whole query: ' . $query;
	    if ($debug) echo("<br>ERROR en cargarEjercitoDefensor().");
	    die($message);
	}
	
		// Usar resultado
	while ($row = mysql_fetch_assoc($result)) {
	    $arrayEjercitoDefensor = array($row['tropas0'],$row['tropas1'],$row['tropas2'],$row['tropas3'],$row['tropas4']);
	}
		// Liberar el $result
	mysql_free_result($result);
	
	require 'include/dbdisconnect.php';
	if ($debug) echo("<br>Desconectado BD en cargarEjercitoDefensor().");
	
	return $arrayEjercitoDefensor;
}

function obtenerIdUsuario($idCiudad) ////Parece ser que funciona bien.
{
	global $debug;
	//Inicializar variables
	$idUsuario;
	
	require 'include/dbconnect.php';
	if ($debug) echo("<br>Conectado BD en obtenerIdUsuario().");
	
	$query = sprintf("SELECT * FROM cities WHERE idcity='%s'",
    mysql_real_escape_string($idCiudad));
    $result = mysql_query($query);

		// Comprobar resultado
		// El siguiente código muestra la consulta enviada a MySQL y el error ocurrido. Útil para debugging.
	if (!$result) {
	    $message  = 'Invalid query: ' . mysql_error() . "\n";
	    $message .= 'Whole query: ' . $query;
	    if ($debug) echo("<br>ERROR en obtenerIdUsuario().");
	    die($message);
	}
	
		// Usar resultado
	while ($row = mysql_fetch_assoc($result)) {
	    $idUsuario = $row['iduser'];
	}
		// Liberar el $result
	mysql_free_result($result);
	
	require 'include/dbdisconnect.php';
	if ($debug) echo("<br>Desconectado BD en obtenerIdUsuario().");
	
	return $idUsuario;
}

function obtenerNombreUsuario($idUsuario)
{
	global $debug;
	//Inicializar variables
	$nombreUsuario;
	
	require 'include/dbconnect.php';
	if ($debug) echo("<br>Conectado BD en obtenerNombreUsuario().");
	
	$query = sprintf("SELECT * FROM users WHERE iduser='%s'",
    mysql_real_escape_string($idUsuario));
    $result = mysql_query($query);

		// Comprobar resultado
		// El siguiente código muestra la consulta enviada a MySQL y el error ocurrido. Útil para debugging.
	if (!$result) {
	    $message  = 'Invalid query: ' . mysql_error() . "\n";
	    $message .= 'Whole query: ' . $query;
	    if ($debug) echo("<br>ERROR en obtenerNombreUsuario().");
	    die($message);
	}
	
		// Usar resultado
	while ($row = mysql_fetch_assoc($result)) {
	    $nombreUsuario = $row['username'];
	}
		// Liberar el $result
	mysql_free_result($result);
	
	require 'include/dbdisconnect.php';
	if ($debug) echo("<br>Desconectado BD en obtenerNombreUsuario().");
	
	return $nombreUsuario;
}

function actualizarCiudadDefensor($idCiudadDefensor,$arrayEjercitoDefensor) //Comprobado.
{
	global $debug;
	
	require 'include/dbconnect.php';
	if ($debug) echo("<br>Conectado BD en actualizarCiudadDefensor().");
	
	if ( !mysql_query("UPDATE cities SET tropas0 ='".$arrayEjercitoDefensor[0]."', tropas1 ='".$arrayEjercitoDefensor[1]."', tropas2 ='".$arrayEjercitoDefensor[2]."', tropas3 ='".$arrayEjercitoDefensor[3]."', tropas4 ='".$arrayEjercitoDefensor[4]."' WHERE idcity ='".$idCiudadDefensor."'") )
	{
		if ($debug) echo("<br>Error en actualizarCiudadDefensor() al actualizar la ciudad ".$idCiudadDefensor." de la tabla 'attacks'.");
		die('Error: '. mysql_error());
	}
	
	require 'include/dbdisconnect.php';
	if ($debug) echo("<br>Desconectado BD en actualizarCiudadDefensor().");
}

/**
 * Hace retornar a las unidades supervivientes a su ciudad de origen.
 * @param $arrayAux array <p>
 * Array con diferentes datos. 
 * </p>
 * @return int Numero en entrada redondeado.<p>
 * </p>
 * @author EweSteap
 */
function actualizarReturningUnits($arrayAux)//comprobado.
{
	global $debug;
	if ($debug) echo("<br>Entrando en actualizarReturningUnits().");
	$horaLlegada = 0;
	$horiz = getEnemyCoord($arrayAux[2])->getCoordX() - getEnemyCoord($arrayAux[3])->getCoordX();
	$vert= getEnemyCoord($arrayAux[2])->getCoordY(); - getEnemyCoord($arrayAux[3])->getCoordY();
	$dist= sqrt(($vert*$vert)+($horiz*$horiz));
	for ($i = 0; $i < 4; $i++) 
	{
		if ($arrayAux[0][$i] > 0 && $dist/unidadesGetMovimiento($i) > $horaLlegada)
		{
			$horaLlegada = $dist/unidadesGetMovimiento($i);
		}
	}
	
	$horaLlegada=$horaLlegada*3600 + time();
	if ($debug) echo("<br>Hora_Actual = ". time() . "<br>Hora_llegada = ". $horaLlegada);
	
	require 'include/dbconnect.php';
	if ($debug) echo("<br>Conectado BD en actualizarReturningUnits().");
	
	$a = $arrayAux[0][0];
	$b = $arrayAux[0][1];
	$c = $arrayAux[0][2];
	$d = $arrayAux[0][3];
	$e = $arrayAux[0][4];
	
	if ($a != 0 || $b != 0 || $c != 0 || $d != 0 || $e != 0)
	{
		if ( !mysql_query("INSERT INTO returning (id_ciudad, hora_llegada, tropas0, tropas1, tropas2, tropas3, tropas4) values ('$arrayAux[2]', '$horaLlegada', '$a', '$b', '$c', '$d', '$e')" ) )
		{
			if ($debug) echo("<br>Error en actualizarReturningUnits().");
			die('Error: '. mysql_error());
		}
	}
		
    require 'include/dbdisconnect.php';
    if ($debug) echo("<br>Desconectado BD en actualizarReturningUnits().");
}

/**
 * Devuelve el número decimal en su parte entera redondeado.
 * @param $num float <p>
 * Numero en entrada.
 * </p>
 * @return int Numero en entrada redondeado.<p>
 * </p>
 * @author EweSteap
 */
function redondearCombate($num)
{
	if (fmod($num,1)>=0.5)
	{
		$ret = $num-fmod($num,1)+1;
	}
	else
	{
		$ret = $num-fmod($num,1);
	}
	return $ret;
}
//batalla(1);
?>


